#!/usr/bin/env node
const fs = require('fs');
const path = require('path');

// 读取类型定义文件
const typeContent = fs.readFileSync(path.join(__dirname, 'src/components/type.ts'), 'utf8');

// 创建完整的类型声明文件内容
const dtsContent = `/**
 * 懒猫文件选择器类型声明文件
 * 自动生成于: ${new Date().toISOString()}
 */

${typeContent}

// Vue组件类型声明
import { DefineComponent } from 'vue'

/**
 * 文件选择器组件类型
 */
export declare const FilePicker: DefineComponent<filePickerPropsType>

/**
 * 自定义元素声明
 * 支持在HTML中直接使用 <lzc-file-picker> 标签
 */
declare global {
  namespace JSX {
    interface IntrinsicElements {
      'lzc-file-picker': filePickerPropsType
    }
  }
  
  interface HTMLElementTagNameMap {
    'lzc-file-picker': HTMLElement
  }
}
`;

// 确保目标目录存在
const distDir = path.join(__dirname, 'libs/lzc-file-pickers/dist');
if (!fs.existsSync(distDir)) {
  fs.mkdirSync(distDir, { recursive: true });
}

// 写入类型声明文件
fs.writeFileSync(path.join(distDir, 'index.d.ts'), dtsContent);

console.log('✅ 类型声明文件已生成: libs/lzc-file-pickers/dist/index.d.ts');
console.log('📦 包含以下类型导出:');
console.log('   - filePickerType (选择器类型枚举)');
console.log('   - tableListType (标签页类型枚举)');
console.log('   - filePickerPropsType (组件属性接口)');
console.log('   - FilePicker (Vue组件类型)');
